In digital broadcasting, a digital device (e.g., cable box) receives mixed media information. Interactive multimedia presentations combine a number of different elementary objects including, but not limited to, 2D and 3D vector graphics content, video, audio objects, text, scene composition, and layout information. Text content is encoded as a sequence of Unicode character codes. However, the character code only defines the semantical meaning of a character (e.g., Latin lowercase character ‘a’) and it does not provide any information about the character's visual appearance. In order to visualize text information, font data has to be present. The text may then be displayed by rendering images of each character using the font data. A device receiving digital broadcasts may have a resident font available to display the text, but several conditions may occur.
One condition that may occur is that resident font metrics may be incompatible with the layout of the multimedia presentation. A font may be too small or too large, which may lead to a break in the viewing experience of the presentation. For example, if a font is too small, the text may not be readable, or the layout of the multimedia content may be broken. On the other hand, if the font is too large, content layout may also be broken and/or portions of the text may be cut off (e.g., content menu entries, in which each entry is limited to a single line of text).
Another condition that may occur is that a resident font may not satisfy stylistic requirements. For example, a graphic content design may require a particular typeface or font style (e.g., vs. “Content Title”).
In addition, a resident font may not support the character set required by the application or content. For example, a user may access web or multimedia content that requires non-Latin character set support. If these additional characters are not supported by the resident font, the text display will be broken (e.g., missing characters will be displayed using a rectangular box).
Thus, in order for a media content to be faithfully rendered on a device (e.g., set-top box, mobile phone, PDA, computer system, etc.) where selected fonts may not be available, the fonts have to be embedded in the content, or transmitted as a separate resource. The receiving terminal would then have necessary font data for text rendering. However, font data may be quite large and transmitting a complete font may not be possible in real time and/or in bandwidth-constrained environments.
In the digital media industry to date, one known approach is to download a complete font (or font subset) file to a remote terminal in advance of sending the media content, to ensure that necessary font information is available when the text is to be rendered. However, this approach does not work in a broadcast environment, in which a media presentation is continuously updated in real time and the receiving terminal can tune into the broadcast at any arbitrary moment in time.
Another known approach involves subdividing font data into smaller data blocks and repeatedly transmitting them using data carousel mechanisms. In the carousel mechanism, all of the information necessary for the display of a broadcast is downloaded so that even if a user misses an original download (e.g., viewing) of the broadcast, the information is retained in the carousel and can be re-accessed. Thus, this approach ensures that, regardless of the moment when the initial broadcast starts, the terminals that tuned in later will receive (and collate) all necessary font data blocks.
The carousel may comprise a mixed file including subset fonts. Characters not required for use may be removed. Removal of the characters may involve subsetting of the fonts/characters that are not to be used. For example, if both Latin and Cyrillic characters are present in the original font and the program's text content is in English, the Cyrillic characters may be removed. Subsets may be created in advance (e.g., statically) and downloaded periodically. The same information may be repeated in portions and put in the carousel. However, the data carousel mechanism approach is extremely redundant in that it requires the same data to be continuously re-sent to satisfy real-time requirements.